// 6-10位密码数字
export const passWordReg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$/
export const loginNameReg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/
export const residentNameReg = /^[\u4e00-\u9fa5A-Za-z·]*$/ // 汉字、字母和”·“
export const alphaNumber = /^[0-9a-zA-Z]*$/ // 数字字母
export const chineseChar = /^[\u4e00-\u9fa5]*$/ // 纯汉字
export const decimalNumber = /^(\d+(\.\d{1,2})?$)/ // 小数
export const phoneReg = /^(\d{11})$/
export const mailReg = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/
// 营业执照号码校验规则
export const businessNumReg = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
// 护照号码校验规则
export const passPortCardReg = /(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/

// 车牌号校验规则
export const carNoReg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]{1}[A-HJ-NP-Z]{1}(?:(([0-9]{5}[DF])|([DF][A-HJ-NP-Z0-9][0-9]{4}))|[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1})$/
// 座机号校验 区号-电话号码-分机号
// export const telephoneReg = /^(?:\d{3}-)?\d{8}$|^(?:\d{4}-)?\d{7,8}$/
export const telephoneReg = /^(?:\d{3}-)?\d{8}$|^(?:\d{4}-)?\d{7,8}$/

/* new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~！@#￥……&*（）——|{}【】‘；：”“'。，、？]") */
/* 除去    ()（）.,，;-   就是这些能输入       */
export const special = new RegExp("[`~!@#%$^&*=|{}':'\\[\\]<>/?~！@#￥……&*——|{}【】‘：”“'。、？]")

export const specialPhone = /^([0-9,-]*$)/

/* 除去 ·   */
export const specialChar = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~！@#￥……&*（）——|{}【】‘；：”“'。，、？]")

/** 经纬度 **/

// export const lnglat = /^-?((0|1?[0-7]?[0-9]?)(([.][0-9]{1,8})?))+[,]+\d(-?(0|[1-8]?[0-9]?)(([.][0-9]{1,8})?))$/;
export const lnglat = /^[-+]?(0(\.\d{1,8})?|([1-9](\d)?)(\.\d{1,8})?|1[0-7]\d{1}(\.\d{1,8})?|180\.0{1,10})+[,]+[-+]?((0|([1-8]\d?))(\.\d{1,8})?|90(\.0{1,8})?)$/
// export const lnglat = /^[\-\+]?(0(\.\d{1,8})?|([1-9](\d)?)(\.\d{1,8})?|1[0-7]\d{1}(\.\d{1,8})?|180\.0{1,8})+[,]+\d(-?(0|[1-8]?[0-9]?)(([.][0-9]{1,8})?))$/;

// 前17位每项的系数
const coefficient = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
// 除11取余的结果对应的校验位（最后一位）的值
const checkDigitMap = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']

// 身份证号校验
const idNumReg = /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/
// 身份证号最后一位校验方法
export const idCardCheck = function (value) {
  if (!idNumReg.test(value) || value.length < 18) {
    if (value.length === 15) {
      return true
    }
    return false
  }
  const cardNum1 = value.slice(0, 17)
  const cardNum2 = value.slice(17, 18)
  var sum = 0
  for (var i = 0; i < 17; i++) {
    sum += cardNum1[i] * coefficient[i]
  }
  if (checkDigitMap[sum % 11] !== cardNum2) {
    // console.log('最后一位错误')
    return false
  }
  // console.log('最后一位正确')
  return true
}
